package com.googlecode.mailnet.info;

import java.util.Map;

import com.googlecode.mailnet.netmodel.Link;
import com.googlecode.mailnet.netmodel.Node;

/**
 * General simulation information object interface.
 */
public interface ISimulationInfo {
	/**
	 * Returns the current time, the number of current step.
	 * @return Current time.
	 */
	int now();
	
	/**
	 * Returns the set of link information providers.
	 * @return The link info-set
	 */
	Map<Link, ? extends ILinkInfo> getLinkInfoSet();
	
	/**
	 * Returns the set of node information providers.
	 * @return The node info-set
	 */
	Map<Node, ? extends INodeInfo> getNodeInfoSet();
	
	void addMessageListener(IMessageListener listener);
	
	void removeMessageListener(IMessageListener listener);
	
//	void addListener(ISimulationListener listener);
//	
//	void removeListener(ISimulationListener listener);
}
